package io.github.frailty9.crserver.utils

import com.mybatisflex.core.paginate.Page

/**
 * 将分页中的每条记录转换为新类型，返回新的 [Page] 实例。
 *
 * 使用方式：
 * ```kotlin
 * val pageB: Page<B> = pageA.convert { B.fromA(it) }
 * ```
 */
@Suppress("UNCHECKED_CAST")
inline fun <T, R> Page<T>.convert(crossinline transform: (T) -> R): Page<R> {
    this.records = this.records.map(transform) as List<T>
    return this as Page<R>
}
